#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "Hello.h"

using namespace testing;

// class MockRadarAPI: public RadarAPI {
//  public:
//   MOCK_METHOD(DetectStatus, Detect, (), (override));
// };

// class Doc1Mock : public Doc1
// {
// public:
//     MOCK_METHOD(std::string, GetValue, (int switcher), (override));
// };

// class Doc2Mock : public Doc2
// {
// public:
//     MOCK_METHOD(void, DoSomething, (std::string value), (override));
// };

// TEST(lib, Stub2)
// {
//     MockRadarAPI api;
//     DetectStatus *value = new DetectStatus(true, 2);
//     ON_CALL(api, Detect()) 
//         .WillByDefault(Return(*value));

//     api.Detect();
//     // EXPECT_EQ("SUT visited haha", actual.GetValue());

// }
// TEST(lib, Stub)
// {
//     SUT sut;
//     Doc1Mock doc1;
//     Doc2Mock doc2;
//     ON_CALL(doc1, GetValue(1)) 
//         .WillByDefault(Return("haha"));

//     ReturnValue actual = sut.SutMethod(&doc1, &doc2, 1);

//     EXPECT_EQ("SUT visited haha", actual.GetValue());

// }

// TEST(lib, Mock)
// {
//     SUT sut;
//     Doc1Mock doc1;
//     Doc2Mock doc2;
//     EXPECT_CALL(doc2, DoSomething("SUT data: 2 to doc 2"));

//     ReturnValue actual = sut.SutMethod(&doc1, &doc2, 2);
// }


